package cn.tedu.tmall.admin.mall.service;

import cn.tedu.tmall.admin.mall.pojo.param.CategoryAddNewParam;
import cn.tedu.tmall.admin.mall.pojo.vo.CategoryListItemVO;
import cn.tedu.tmall.admin.mall.pojo.vo.CategoryStandardVO;
import cn.tedu.tmall.common.consts.cache.CategoryCacheConsts;
import cn.tedu.tmall.common.pojo.vo.PageData;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Transactional //事务管理
public interface ICategoryService extends CategoryCacheConsts {

    //事务的ACID特性
    //原子性(atomicity):事务的不可分割\不可拆分特性,要么成功要么失败
    //一致性(consistency):两个角度,规则：不同业务的事务执行规则是一致的;数据平衡:数据之间事务执行是数据平衡的，类似相互之间的转账例子
    //隔离性(isolation):不同事务执行过程相互之间是隔离的,互不干预
    //持久性(durability):事务的在执行后的数据是持久性的,如果执行在内存后会长期保存在硬盘中
    void addNew(CategoryAddNewParam categoryAddNewParam);

    CategoryStandardVO getStandardById(Long id);

    PageData<CategoryListItemVO> listByParent(Long parentId, Integer pageNum, Integer pageSize);

    void saveList(Long id, List<CategoryStandardVO> categoryList);
}
